package cn.iocoder.yudao.module.crossborder.inventory.api.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 库存信息 DTO
 *
 * @author LHL
 */
@Schema(description = "RPC 服务 - 库存信息 DTO")
@Data
public class InventoryDTO {

    @Schema(description = "库存编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
    private Long id;

    @Schema(description = "商品编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
    private Long productId;

    @Schema(description = "商品SKU编号", example = "3072")
    private Long skuId;

    @Schema(description = "仓库编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "4096")
    private Long warehouseId;

    @Schema(description = "仓库名称", example = "上海仓库")
    private String warehouseName;

    @Schema(description = "库存类型", example = "1")
    private Integer inventoryType;

    @Schema(description = "库存状态", example = "1")
    private Integer status;

    @Schema(description = "可用库存", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
    private Integer availableQuantity;

    @Schema(description = "预留库存", example = "10")
    private Integer reservedQuantity;

    @Schema(description = "锁定库存", example = "5")
    private Integer lockedQuantity;

    @Schema(description = "总库存", example = "115")
    private Integer totalQuantity;

    @Schema(description = "安全库存", example = "20")
    private Integer safetyStock;

    @Schema(description = "最小库存", example = "10")
    private Integer minStock;

    @Schema(description = "最大库存", example = "1000")
    private Integer maxStock;

    @Schema(description = "库存成本", example = "1500.00")
    private String cost;

    @Schema(description = "库存位置", example = "A-01-01")
    private String location;

    @Schema(description = "批次号", example = "BATCH20240101")
    private String batchNumber;

    @Schema(description = "生产日期")
    private LocalDateTime productionDate;

    @Schema(description = "过期日期")
    private LocalDateTime expirationDate;

    @Schema(description = "最后更新时间")
    private LocalDateTime lastUpdateTime;

    @Schema(description = "备注", example = "正常库存")
    private String remark;

    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    @Schema(description = "更新时间")
    private LocalDateTime updateTime;

}
